|
In signal processing, the overlap–add method (OA, OLA) is an efficient way to evaluate the discrete convolution of a very long signal with a finite impulse response (FIR) filter : : where ''h''() = 0 for ''m'' outside the region (''M'' ). The concept is to divide the problem into multiple convolutions of ''h''() with short segments of : : where ''L'' is an arbitrary segment length. Then: : and ''y''() can be written as a sum of short convolutions: : where is zero outside the region (). And for any parameter it is equivalent to the -point circular convolution of with in the region (). The advantage is that the circular convolution can be computed very efficiently as follows, according to the circular convolution theorem: where FFT and IFFT refer to the fast Fourier transform and inverse fast Fourier transform, respectively, evaluated over discrete points. == The algorithm == Fig. 1 sketches the idea of the overlap–add method. The signal is first partitioned into non-overlapping sequences, then the discrete Fourier transforms of the sequences are evaluated by multiplying the FFT of with the FFT of . After recovering of by inverse FFT, the resulting output signal is reconstructed by overlapping and adding the as shown in the figure. The overlap arises from the fact that a linear convolution is always longer than the original sequences. In the early days of development of the fast Fourier transform, was often chosen to be a power of 2 for efficiency, but further development has revealed efficient transforms for larger prime factorizations of L, reducing computational sensitivity to this parameter. A pseudocode of the algorithm is the following: Algorithm 1 (''OA for linear convolution'') Evaluate the best value of N and L (L>0, N = M+L-1 nearest to power of 2). Nx = length(x); H = FFT(h,N) (''zero-padded FFT'') i = 1 y = zeros(1, M+Nx-1) while i <= Nx (''Nx: the last index of x()'') il = min(i+L-1,Nx) yt = IFFT( FFT(x(i:il),N) * H, N) k = min(i+N-1,M+Nx-1) y(i:k) = y(i:k) + yt(1:k-i+1) (''add the overlapped output blocks'') i = i+L end 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「Overlap–add method」の詳細全文を読む スポンサード リンク
|